Some text for introduction to this survey and results.
Student survey has been conducted for 2 weeks and received 51 total reponses.
Load all required libraries that will be used throughout this analysis.
library(plyr)
library(psych)
library(plotly)
Start reading both CSV files, from student survey and speedtest result.
csv_surv <- read.csv('Student_Survey.csv')
csv_test <- read.csv('Speedtest_Result.csv')
Rename variables name to something more meaningful, shorter and easier to code.
tmpstud <- plyr::rename(csv_surv, c(Academic.Programme = "Programme", Internet.Connection.Method = "SSID", Main.Usage.of.Internet = "Usage", On.overall.basis..how.satisfied.are.you.with.wireless.internet.connection.provided.by.IIUM. = "Satisfaction", Propose.a.solution.to.improve.IIUM.WIFI.services. = "Comment", Average.Duration.of.Daily.Use.of.Internet = "Duration", How.many.times.have.your.Internet.connection.been.suddenly.disconnected.or.face.intermittent.connection.in.past.3.days. = "Disconnected", Is.WiFi.coverage.adequate.and.within.acceptable.signal.strength. = "Coverage", How.satisfied.are.you.with.the.network.speed.to.achieve.your.main.usages. = "Speed"))
tmptest <- plyr::rename(csv_test, c(Submission.Date = "Timestamp", WiFi.SSID = "SSID", Download.Speed..Mbps. = "DLSpeed", Download.Size..MB. = "DLSize", Upload.Speed..Mbps. = "UPSpeed", Upload.Size..MB. = "UPSize", Ping..ms. = "Ping", Jitter..ms. = "Jitter", Loss.... = "Loss", Signal.Strength..dBm. = "Signal"))
Perform data cleansing
tmpstud <- tmpstud[which(tmpstud$Gender == ''), ]
tmpstud$Timestamp <- tmpstud$Gender <- tmpstud$Comment <- NULL
tmpstud$Usage[7] <- "Study and assignment, Topic and subject research, Casual browsing"
tmpstud$Usage <- strsplit(as.character(tmpstud$Usage), ",")
Split Usage into list and transpose into dataframe
k <- 1
Respondent <- integer()
Programme <- character()
SSID <- character()
Mahallah <- character()
Usage <- character()
Satisfaction <- integer()
Duration <- character()
Speed <- integer()
Disconnected <- character()
Coverage <- character()
for(i in 1:nrow(tmpstud))
{
for(j in 1:3)
{
Respondent[k] <- i # to identify unique number of respondent
Programme[k] <- as.character(tmpstud$Programme[i])
SSID[k] <- as.character(tmpstud$SSID[i])
Mahallah[k] <- as.character(tmpstud$Mahallah[i])
Usage[k] <- trimws(tmpstud$Usage[[i]][j]) # trim leading and trailing whitespace
Satisfaction[k] <- tmpstud$Satisfaction[i]
Duration[k] <- as.character(tmpstud$Duration[i])
Speed[k] <- tmpstud$Speed[i]
Disconnected[k] <- as.character(tmpstud$Disconnected[i])
Coverage[k] <- as.character(tmpstud$Coverage[i])
k <- k + 1
}
}
Finalized dataframe from previous step
dfstud <- data.frame(Respondent, Programme, SSID, Mahallah, Usage, Satisfaction, Duration, Speed, Disconnected, Coverage, stringsAsFactors = FALSE)
Bar graph for overall satisfaction
dfsatisfaction <- count(unique(dfstud[, c(1,6)])[, 2])
dfsatisfaction$x[dfsatisfaction$x == 1] <- "Very Dissatisfied"
dfsatisfaction$x[dfsatisfaction$x == 2] <- "Dissatisfied"
dfsatisfaction$x[dfsatisfaction$x == 3] <- "Satisfied"
dfsatisfaction$x[dfsatisfaction$x == 4] <- "Very Satisfied"
plot_ly(x = dfsatisfaction$x, y = dfsatisfaction$freq, type = "bar") %>%
layout(title = 'Overall Level of Satisfaction', yaxis = list(title = "Respondent"), xaxis = list(title = "Satisfaction Level"))